#pragma once

#include "IPlan.h"

class CPlan : public IPlan
{
public:
	        CPlan();
	virtual ~CPlan();

public:
	// Attributes
	virtual void        setName(std::string name);
    virtual void        setLabel(std::string label);
	virtual void        addLabel(std::string label);
	virtual void        setRemarks(std::string remarks);
	virtual std::string getName() const;
	virtual std::string getLabel() const;
	virtual std::string getRemarks() const;
    //No date

	virtual int         add(IPlan* plan);
	virtual int         remove(IPlan* plan);
    virtual IPlan*      find(std::string name);
    virtual IPlan*      find(int index);
	
	// Time line
	virtual int         addTimeLine(ITimeLine* newTimeLine);
	virtual int         removeTimeLine(std::string name);
	virtual ITimeLine*  getTimeLine(std::string name) const;
    virtual ITimeLine*  getTimeLine(int index) const;
    
    virtual void         setNext(IPlan* plan);
    virtual void         setPre(IPlan* plan);
    virtual const IPlan* getNext() const;
    virtual const IPlan* getPre() const;

	virtual bool        operator==(IPlan& p);

private:
	ITimeLine* m_pFirstTimeLine;
	std::string  m_strName;
	std::string  m_strLabel;
	std::string  m_strRemarks;
	IPlan* m_pNextPlan;
	IPlan* m_pPrePlan;
};
